Skip to content

工厂模式 (推荐 Es6,过时禁止使用的)

通过一个函数来创建对象,该函数可以接受参数以自定义对象的属性和方法。

js
function createPerson(name, age) {
  return {
    name: name,
    age: age,
    sayHello: function () {
      console.log(
        "Hello, my name is " +
          this.name +
          " and I am " +
          this.age +
          " years old."
      );
    },
  };
}

let person1 = createPerson("John", 30);
let person2 = createPerson("Alice", 25);

person1.sayHello(); // 输出:Hello, my name is John and I am 30 years old.
person2.sayHello(); // 输出:Hello, my name is Alice and I am 25 years old.

缺点

  • 无法识别对象的类型。所有通过工厂模式创建的对象类型都是相同的,这使得在调试和维护代码时可能会出现困难。

  • 不能通过 instanceof 运算符判断对象的类型。

js
person1 instanceof Object; // true
person1 instanceof createPerson; // false